# 
# To change this template, choose Tools | Templates
# and open the template in the editor.
 
require 'pdf/writer'
require 'pdf/simpletable'

class ComodatoPdf
  def initialize(comodato_id)
    @pdf = PDF::Writer.new(:paper => 'LETTER')
    @comodato = BienComodato.find(comodato_id)
    @pdf.select_font("Times-Roman", :encoding => 'WinAnsiEncoding')
    
  end

  def imprimir
    @participante = Centro.find(@comodato.centro_id)
    
    imprimir_inicio
    
    imprimir_declaraciones
    
    imprimir_clausulas
    
    imprimir_firmas

    @pdf.render    
  end
  
  def imprimir_declaraciones
    @pdf.text "<b>DECLARACIONES</b>", :font_size => 18, 
      :justification => :center, :spacing => 1.5
    @pdf.text "\n"

    marca = Familia.find(@comodato.familia_id).nombre.capitalize
    
    p1 "1. Declara EL COMODANTE que:"
    
    p2 "1.1 Es su deseo otorgar en pr\351stamo el #{@comodato.descripcion_bien} de la marca #{@comodato.marca} y modelo #{@comodato.modelo} con n\372mero de serie #{@comodato.numero_serie} decorado con el promocional de la marca <b>#{marca}</b>, en lo sucesivo <b>EL BIEN</b> a <b>EL COMODATARIO</b>."
    
    p1 "2. Declara EL COMODATARIO por su derecho propio que:"
    
    p2 "2.1. Es su deseo recibir en pr\351stamo por parte de EL COMODANTE el bien detallado en la Declaraci\363n 1.1 anterior, de conformidad con las Cla\372sulas que integran la presente Carta Comodato."
  end
  
  def imprimir_clausulas
    @pdf.text "<b>CLAUSULAS</b>", :font_size => 18, 
      :justification => :center, :spacing => 1.5
    @pdf.text "\n"
    
    p1 "PRIMERA.- <b>EL COMODANTE</b> transmite a <b>EL COMODATARIO</b> en calidad de pr\351stamo temporal <b>EL BIEN</b> para  que de manera exclusiva almacene, deposite y promocione los productos de <b>EL COMODANTE</b>, comprometi\351ndose \351ste \372ltimo a conservarlo y a cuidarlo d\341ndole el uso para el cu\341l fue elaborado. <b>EL COMODANTE</b> llevar\341 a cabo peri\363dicamente la revisi\363n y mantenimiento de <b>EL BIEN</b>."

    p1 "SEGUNDA.- <b>EL COMODATARIO</b> se obliga en todo momento a destinar <b>EL BIEN</b> \372nica y exclusivamente para los fines para los que le fue prestado, en la inteligencia de que por ning\372n motivo <b>EL COMODATARIO</b> podr\341 almacenar, depositar, o simplemente introducir temporalmente productos que no sean de los comercializados por <b>EL COMODANTE</b>."

    p1 "TERCERA.- <b>EL COMODATARIO</b> se obliga a responder por el deterioro que <b>EL BIEN</b> sufra por causas imputables a \351l fuera del uso normal y adecuado de  <b>EL BIEN</b>."

    p1 "Asimismo, <b>EL COMODATARIO</b> se har\341 responsable por la p\351rdida de <b>EL BIEN</b>, a menos que pruebe debidamente que la p\351rdida se debi\363 por caso fortuito o fuerza mayor, sin embargo, ser\341 responsabilidad de <b>EL COMODATARIO</b> la p\351rdida de <b>EL BIEN</b> originado por las causas antes detalladas, cuando emplee el mismo para uso diferente del convenido o por m\341s tiempo del pactado."

    p1 "CUARTA.- Las partes convienen en que <b>EL COMODATARIO</b> no podr\341 conceder a un tercero bajo ning\372n t\355tulo, circunstancia, situaci\363n, o cualquier otra causa, el uso de <b>EL BIEN</b>, salvo previo consentimiento expreso y por escrito por parte de <b>EL COMODANTE</b>."

    p1 "QUINTA.- El presente contrato tendr\341 una vigencia indefinida contada a partir de la fecha de su firma, por lo que <b>EL COMODANTE</b> podr\341 darlo por terminado en cualquier momento sin responsabilidad judicial alguna para \351l, con un simple aviso dado por escrito a <b>EL COMODATARIO</b> con cinco d\355as naturales de anticipaci\363n, oblig\341ndose \351ste \372ltimo a devolver <b>EL BIEN</b> a <b>EL COMODANTE</b> en un plazo m\341ximo de un d\355a h\341bil, contado a partir de la solicitud respectiva por parte de \351ste \372ltimo, d\341ndose por terminado autom\341ticamente el presente Contrato."

    p1 "SEXTA.- Son obligaciones de <b>EL COMODATARIO</b> las siguientes:"

    numeral  "a","No hacer uso de <b>EL BIEN</b> en forma lucrativa."
    numeral  "b","No arrendar o subarrendar <b>EL BIEN</b>."
    numeral "c","Dar el debido cuidado y mantenimiento a <b>EL BIEN</b>."
    numeral "d","Responder en todo momento por los daños que llegase a sufrir <b>EL BIEN</b> en lo convenido en el presente contrato ."
    numeral "e","Modificar en parte o en la totalidad <b>EL BIEN</b>."
    numeral "f","En general, no utilizar <b>EL BIEN</b> en forma distinta a los fines para los que fue entregado en comodato."

    p1 "S\351PTIMA.- <b>EL COMODATARIO</b> se obliga a devolver a <b>EL COMODANTE</b> <b>EL BIEN</b>, en cuanto el presente Convenio se d\351 por terminado, y dentro del t\351rmino establecido en la Cl\341usula Quinta anterior."

    p1 "OCTAVA.- El incumplimiento por parte de <b>EL COMODATARIO</b> a cualquiera de las especificaciones mencionadas, facultar\341 a <b>EL COMODANTE</b> a rescindir el mismo."

    p1 "NOVENA.- Si <b>EL BIEN</b> sufriera alg\372n daño, siniestro o robo, <b>EL COMODATARIO</b> deber\341 dar aviso inmediato del hecho, a <b>EL COMODANTE</b>, quedando estipulado que el retardo en el aviso de referencia es imputable a <b>EL COMODATARIO</b>, lo que generar\341 responsabilidades a su cargo."

    p1 "D\351CIMA.- Para todo lo relacionado con el presente convenio, las partes señalan como sus domicilios respectivos los siguientes:"

    p2 "a. <b>Casa Cuervo</b>: Avenida R\355o Churubusco No. 213, Colonia Granjas M\351xico, C\363digo Postal 0844, M\351xico, Distrito Federal."
    p2 "b. <b>#{@participante.nombre_comercial}</b>: #{@participante.domicilio}"

    p1 "Las notificaciones que practiquen las partes deberan realizarse en los domicilios arriba citados, ya que las que se efect\372en en lugares diversos, no surtir\341n efecto alguno. Cualquier cambio de los domicilios arriba citados debera notificarse a la contraparte por escrito, con 05 d\355as h\341biles de anticipaci\363n, de lo contrario las notificaciones que realicen en los domicilios antes mencionados se tendr\341n por v\341lidos para todos los efectos legales."
    
  end
  
  def imprimir_firmas
    
    fecha_dia = @comodato.fecha_inicio.mday
    fecha_firma = String.new
    fecha_firma << fecha_dia.to_s 
    fecha_firma << (fecha_dia == 1 ? ' dia': ' dias')
    fecha_firma << ' de ' << @comodato.fecha_inicio.strftime('%B') << ' de ' << @comodato.fecha_inicio.year.to_s
    
    p "Las partes enteradas del contenido de la presente Carta Convenio, reconocen que en la celebraci\363n del mismo no existi\363 dolo, error, mala fe o ning\372n otro vicio del consentimiento, por lo que la firman por duplicado en la ciudad de #{@participante.ciudad}, a los #{fecha_firma}."

    # imprimir tabla con datos para firma
    casa_cuervo = "Casa Cuervo"
    participante = "#{@participante.nombre_comercial}"
    ejecutivo_nombre = @comodato.centro.ejecutivo.nombre_completo
    participante_nombre = @participante.nombre_contacto
    jefe_inmediato = Ejecutivo.find(@comodato.centro.ejecutivo.reporta_a_id).nombre_completo unless @comodato.centro.ejecutivo.reporta_a_id.nil?
    
    PDF::SimpleTable.new do |tab|
      tab.show_lines = :none
      tab.show_headings = false
      tab.column_order = [
        casa_cuervo, participante
      ]
      
      tab.columns[casa_cuervo] = PDF::SimpleTable::Column.new(casa_cuervo) do |col|
        col.justification = :center
      end
      
      tab.columns[participante] = PDF::SimpleTable::Column.new(participante) do |col|
        col.justification = :center
      end
      
      datum = [
        {casa_cuervo => "Casa Cuervo", participante => "#{@participante.nombre_comercial}"},
        {casa_cuervo => "Casa Cuervo, S.A. de C.V.", participante => "#{@participante.razon_social}"},
        {casa_cuervo => "\040", participante =>  "\040"},
        {casa_cuervo => ejecutivo_nombre, participante => participante_nombre}
      ]
      
      tab.data.replace datum
      
      tab.render_on(@pdf)
    end
    
    p "\040"
    
    PDF::SimpleTable.new do |tab_jefe|
      tab_jefe.show_lines = :none
      tab_jefe.show_headings = false
      tab_jefe.column_order = [
        "jefe"
      ]
      
      tab_jefe.columns["jefe"] = PDF::SimpleTable::Column.new("jefe") do |col|
        col.justification = :center
      end
      
      datum = [
        {"jefe" => "\040"},
        {"jefe" => "Casa Cuervo, S.A. de C.V."},
        {"jefe" => "\040"},
        {"jefe" => jefe_inmediato}
      ]
      
      tab_jefe.data.replace datum

      tab_jefe.render_on(@pdf)
    end
  end
  
  def imprimir_inicio
    @image = "#{RAILS_ROOT}/public/images/logocuervo.jpg"
        
    @pdf.image @image, :justification => :center, :resize => 0.40
    @pdf.text "\n"

    p "Carta Comodato que celebran por una parte <b>CASA CUERVO, S.A. DE C.V.</b>, a quien en lo sucesivo se le denominar\341 como <b>EL COMODANTE</b> y por la otra parte <b>#{@comodato.comodatario_nombre}</b> en lo sucesivo se le denominar\341 <b>EL COMODATARIO</b>, de conformidad con:"
    
  end
  
  def p(texto)
    p_print(texto)
    
  end
  
  def p1(texto)
    p_print(texto, 1)
  end
  
  def p2(texto)
    p_print(texto, 2)
  end
  
  def p_print(texto, tab=0, tab_size=0.75)
    current_left_margin = @pdf.left_margin
    tab_factor = @pdf.left_margin * (tab_size * tab)
    @pdf.left_margin += tab_factor
    
    @pdf.font_size = 12
    @pdf.text texto, :justification => :full
    @pdf.text "\n"
    
    @pdf.left_margin = current_left_margin
    
  end
  
  def numeral(inciso, cuerpo)
    texto_imprimir = (inciso + ". " + cuerpo)

    p2 texto_imprimir
    
  end
end
